﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace BatallaNavalgo.Tests
{
    [TestClass]
    public class TestRompeHielos
    {
        RompeHielos rompeHielos;
        public TestRompeHielos()
        {
            int orientacion = 0;
            int[] posicion = new int[2];
            posicion[0] = 0;
            posicion[1] = 1;
            int[] direccion = new int[2];
            direccion[0] = 0;
            direccion[1] = 1;
            Tablero tablero = new Tablero();
            rompeHielos = new RompeHielos(posicion, direccion,orientacion, tablero);
        }

        [TestMethod]
        public void TestRompeHielosDebeLanzarExcepcionSiSeLaInicializaIncorrectamente()
        {
            int orientacion = 1;
            int[] posicion = new int[2];
            posicion[0] = 0;
            posicion[1] = 9;
            int[] direccion = new int[2];
            direccion[0] = 0;
            direccion[1] = 1;
            Tablero tablero = new Tablero();
            try
            {
                rompeHielos = new RompeHielos(posicion, direccion,orientacion, tablero);
                Assert.Fail("Se inicializó correctamente");
            }
            catch (NoSePudoInicializarNaveException ex)
            {
                Assert.IsTrue(ex is NoSePudoInicializarNaveException);
            }
        }

        [TestMethod]
        public void TestDeberiaPonerElRompeHielosHorizontalmenteSiOrientacionEs0()
        {
            int orientacion = 0;
            int[] posicion = new int[2];
            posicion[0] = 0;
            posicion[1] = 0;
            int[] direccion = new int[2];
            direccion[0] = 0;
            direccion[1] = 1;
            Tablero tablero = new Tablero();

            rompeHielos = new RompeHielos(posicion, direccion, orientacion, tablero);

            Assert.IsTrue(rompeHielos.Fragmentos[2].Posicion[0] == 2);
        }

        [TestMethod]
        public void TestDeberiaPonerElRompeHielosVerticalmenteSiOrientacionEs1()
        {
            int orientacion = 1;
            int[] posicion = new int[2];
            posicion[0] = 0;
            posicion[1] = 0;
            int[] direccion = new int[2];
            direccion[0] = 0;
            direccion[1] = 1;
            Tablero tablero = new Tablero();

            rompeHielos = new RompeHielos(posicion, direccion, orientacion, tablero);

            Assert.IsTrue(rompeHielos.Fragmentos[2].Posicion[1] == 2);

        }
    }
}
